//
//  CZCategoryViewController.m
//  i0S007通用项目
//
//  Created by Apple on 16/2/20.
//  Copyright © 2016年 Apple. All rights reserved.
//

#import "CZCategoryViewController.h"
#import "CZCategoryModelViewModel.h"
#import "CZCategoryModel.h"
#import "CZMainTableViewCell.h"
#import "CZSubTableViewCell.h"

NSString *const MainTableViewReuseIdentifier = @"MainTableViewReuseIdentifier";
NSString *const SubTableViewReuseIdentifier = @"subTableViewReuseIdentifier";

@interface CZCategoryViewController () <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *mainTableView;

@property (weak, nonatomic) IBOutlet UITableView *subTableView;

@property (nonatomic, strong) CZCategoryModelViewModel *categoryVM;

// 记录mainTableView选中的row
@property (nonatomic, assign) NSInteger selectedRow;
@end

@implementation CZCategoryViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 注册cell
    [self.mainTableView registerClass:[CZMainTableViewCell class] forCellReuseIdentifier:MainTableViewReuseIdentifier];
    [self.subTableView registerClass:[CZSubTableViewCell class] forCellReuseIdentifier:SubTableViewReuseIdentifier];
    
    // 隐藏tableView cell 的分割线
    self.mainTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    self.subTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.mainTableView) {
        // 返回模型的个数
        return self.categoryVM.categories.count;
    } else {
        // 子tableView
        // 获取mainTableView选中的cell对应的模型
        CZCategoryModel *model = self.categoryVM.categories[self.selectedRow];
        return model.subcategories.count;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.mainTableView) {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MainTableViewReuseIdentifier];

        // 获取对应要显示的模型
        CZCategoryModel *model = self.categoryVM.categories[indexPath.row];
        cell.textLabel.text = model.name;
        
        cell.imageView.image = [UIImage imageNamed:model.small_icon];
        cell.imageView.highlightedImage = [UIImage imageNamed:model.small_highlighted_icon];
        
        // 模型中有子分类的就显示箭头,没有子分类的就不显示箭头
        if (model.subcategories.count == 0) {
            cell.accessoryType = UITableViewCellAccessoryNone;
        } else {
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }
        
        return cell;
    } else {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SubTableViewReuseIdentifier];
        
        // 获取mainTableView选中的cell对应的模型
        CZCategoryModel *model = self.categoryVM.categories[self.selectedRow];
        cell.textLabel.text = model.subcategories[indexPath.row];
        
        return cell;
    }
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == self.mainTableView) {
        // 记录mainTable点击的是哪个cell
        self.selectedRow = indexPath.row;
        
        // 刷新subTableView
        [self.subTableView reloadData];
        
        // 如果没有子分类,通知TopItem选中了某个分类
        // 1.拿到对应的模型
        CZCategoryModel *model = self.categoryVM.categories[indexPath.row];
        
        // 2.判断是否有子分类
        if (model.subcategories.count == 0) {
            [[NSNotificationCenter defaultCenter] postNotificationName:CZCategoryDidChangeNofitication object:self userInfo:@{CZCategoryImageNameKey: model.icon, CZCategoryHighlightedImageNameKey: model.highlighted_icon, CZCategoryeNameKey: model.name}];
            
            // 关闭modal出来的分类控制器
            [self dismissViewControllerAnimated:YES completion:nil];
        }
    } else {
        // 点击了某个子分类,通知TopItem选中了某个分类
        // 拿到对应的模型:注意不要使用 indexPath,因为这个indexPath是选中subTableView的indexPath
        CZCategoryModel *model = self.categoryVM.categories[self.selectedRow];
        
        // 获取选中的子分类名称
        NSString *subCategoryName = model.subcategories[indexPath.row];
        
        [[NSNotificationCenter defaultCenter] postNotificationName:CZCategoryDidChangeNofitication object:self userInfo:@{CZCategoryImageNameKey: model.icon, CZCategoryHighlightedImageNameKey: model.highlighted_icon, CZCategoryeNameKey: model.name, CZSubCategoryeNameKey: subCategoryName}];
        
        // 关闭modal出来的分类控制器
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}

#pragma mark - 懒加载
- (CZCategoryModelViewModel *)categoryVM {
    if (_categoryVM == nil) {
        _categoryVM = [[CZCategoryModelViewModel alloc] init];
    }
    
    return _categoryVM;
}
@end
